Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2014, 19:46
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

После ответа половина фич формы не работает
Прежде аякс отвечал только за ошибки, сегодня в одной форме которая не требует редиректа сделал вывод данных через заднюю дверь и не все вышло как задумано.

Структура хмтля такая (абстрактно)


<style>
<div id="form_container">
   <form id="form_data">
       <input'ы
<script>



я хотел обновлять только содержание формы, то есть весь ее внутренний хтмл, все поля с подготовленными данными. Это все работает. Но после обновления по XMLHTTPRequest некоторые фичи внезапно и молча отказываются работать.

Умирают тумборез, прогресс и сабмит - видимо по разным причинам, но самое печальное что в консоли полная тишина. Куда-то в мозг Жанны Агузаровой все улетает.

Ну то есть я примерно понял что в прогрессе сдыхает он сам сгенеренный js'ом, что с тумборезом - хз, а вот почему кнопка которая найдена getElementById - в точности как и сам форма - куда-то исчезает из извилин браузера - не ясно.

При этом исправно работает валидация. Все подписывает, все показывает и отказывает.

Как тут обычно это делают? Форма, юзер там написал, нажал Сохранить, оно сохранилось и без перезагрузки страницы показалось на том же месте.

Может всю тряхомудию со стилями скриптами перезакачивать?
Ответить с цитированием
  #2 (permalink)  
Старый 10.11.2014, 19:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

А, бл, понял почему валидация работает. Она вся в js-объекте, у него все линки остаются и ему похер что там теперь новый хтмл. А всему остальному - не похер.

Ну и как это обычно делают? Расскажите в общих чертах пжлста.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2014, 04:43
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

1) делегация событий перманентному предку
2) реиницализация js при обновлении innerHTML
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2014, 05:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

1 все висит на форме, ее тег не затрагивается
2 не проканало, сделал init, все должно было пересоздаться и перенавешаться - х нанэ. Прогресс появился, а тумборез только головку высунул. Без каментов в консоли хер найдешь, надо трассировать глазками. Поэтому нахер отключил. Пусть перезагружается.
Ответить с цитированием
  #5 (permalink)  
Старый 11.11.2014, 06:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это меня заколодило на халявной отправке формы в html5. Вспомнил как делается без халявы. В полевые объекты складывается ввод юзера, то есть только изменения, по нажатию Сохранить из values объектов собирается json и отгружается на сервер, сохраняется и, если 200 ОК - то просто пишется "сохранено". Контент передается только если надо что-то отрендерить, скажем картинку закачали или удалили.
Ответить с цитированием
  #6 (permalink)  
Старый 11.11.2014, 12:02
Профессор
Отправить личное сообщение для krasovsky Посмотреть профиль Найти все сообщения от krasovsky
 
Регистрация: 21.12.2012
Сообщений: 869

ты код приведи, хоть посмотреть на твое "ничего не работает"
Ответить с цитированием
  #7 (permalink)  
Старый 11.11.2014, 14:33
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Какой еще код, нет там никакого кода - там логика. Форма отгружается на халяву, вся, скрипт все проверяет и, если без аякса - перезагружает страницу и все рендерится с БД, поскольку нет поста. Когда пост есть - рендерить нечего кроме сообщений об ошибках, но без аякса приходится рендерить все и сообщение об ошибках втыкать. С аяксом - только сообщение передается как текст (в json) и js его тупо втыкал по указанному id.

И тут меня "осенило" - а что если всю форму так передавать - зашибись же будет. Сделал - отрезал ей бошку и пошли поля в js, текстом, тот все профтыкал и, х нанэ - все линки порвались. И тут меня осенило что передавать надо только данные полей, а не весь хтмл - он же уже есть. Ну вот, дописал функцию в 5 строк чтоб из БД показывало, хоть это и не обязательно и готово.
Ответить с цитированием
  #8 (permalink)  
Старый 11.11.2014, 14:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Код все-таки есть

for(var name in data)
	if(!inputs[name].files)
		inputs[name].elem.value=data[name];


Эта сука вопит что операция инсекурная если не проверить if(!inputs[name].files), между тем если в php не стереть value, то оно нормально будет торчать в кнопке file, в том самом value. Надо попробовать, getAttribute должен взять. Смысла правда нет, поскольку если не читать дополнительно из бд - там массив.

ЗЫ С файлами вообще геморрой. Тексты можно гонять туда-сюда вообще не читая ничего из БД, а инфа о файлах не возвращается.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает onmouseup после выполнения onclick PAMAC Javascript под браузер 2 16.01.2010 14:55
Скрытие блоков после получения ответа nemo Общие вопросы Javascript 1 22.11.2009 10:22
Дописать стили после получения ответа nemo AJAX и COMET 1 21.11.2009 20:46
У элемента img внутри form пропадает событие после onsubmit формы Eugene Events/DOM/Window 2 18.06.2009 19:21
Передача фокуса из формы после ввода символа kuh Общие вопросы Javascript 2 08.03.2009 19:50